package managedbeans;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import factoryService.FactoryService;
import model.Categoria;
import model.MetaDespesa;
import model.MetaReceita;
import model.Usuario;

@ManagedBean
@RequestScoped
public class BeanMeta implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7852896986235026361L;

	private Usuario usuario;
	private MetaReceita metaReceita;
	private MetaDespesa metaDespesa;
	private List<MetaReceita> listaMetaReceita;
	private List<MetaDespesa> listaMetaDespesa;
	private List<Categoria> listaCategoria;

	public BeanMeta() {
		
		if (usuario == null) {
			usuario = (Usuario) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
		}
		if (metaReceita == null) {
			metaReceita = new MetaReceita();
		}
		if (metaDespesa == null) {
			metaDespesa = new MetaDespesa();
		}
		metaReceita.setUsuario(usuario);
		metaDespesa.setUsuario(usuario);
		alimentaListaMetaReceita();
		alimentaListaMetaDespesa();
		setListaCategoria(FactoryService.getCategoriaService().findAllByNome(usuario.getCodigo()));
	}

	// /////
	public void novoMetaReceita() {
		setMetaReceita(new MetaReceita());
		getMetaReceita().setUsuario(usuario);
	}

	
	public void salvarMetaReceita() { 
		FactoryService.getMetaReceitaService().salvar(metaReceita);
		alimentaListaMetaReceita();
		novoMetaReceita();
	}

	public void removerMetaReceita() {
		FactoryService.getMetaReceitaService().remover(metaReceita);
		alimentaListaMetaReceita();
		novoMetaReceita();
	}

	public void editarMetaReceita(MetaReceita metaReceita) {
		setMetaReceita(metaReceita);
	}
	
	public void alimentaListaMetaReceita() {
		listaMetaReceita = FactoryService.getMetaReceitaService().findAll(usuario.getCodigo());
	}

	// //////////
	public void novoMetaDespesa() {
		setMetaDespesa(new MetaDespesa());
		getMetaDespesa().setUsuario(usuario);
	}

	public void salvarMetaDespesa() {
		FactoryService.getMetaDespesaService().salvar(metaDespesa);
		alimentaListaMetaDespesa();
		novoMetaDespesa();
	}

	public void removerMetaDespesa() {
		FactoryService.getMetaDespesaService().remover(metaDespesa);
		alimentaListaMetaDespesa();
		novoMetaDespesa();
	}

	public void editarMetaDespesa(MetaDespesa metaDespesa) {
		setMetaDespesa(metaDespesa);
	}
	
	public void alimentaListaMetaDespesa() {
		listaMetaDespesa = FactoryService.getMetaDespesaService().findAll(usuario.getCodigo());
	}

	// /////////

	public MetaReceita getMetaReceita() {
		return metaReceita;
	}

	public void setMetaReceita(MetaReceita metaReceita) {
		this.metaReceita = metaReceita;
	}

	public MetaDespesa getMetaDespesa() {
		return metaDespesa;
	}

	public void setMetaDespesa(MetaDespesa metaDespesa) {
		this.metaDespesa = metaDespesa;
	}

	public List<MetaReceita> getListaMetaReceita() {
		return listaMetaReceita;
	}

	public void setListaMetaReceita(List<MetaReceita> listaMetaReceita) {
		this.listaMetaReceita = listaMetaReceita;
	}

	public List<MetaDespesa> getListaMetaDespesa() {
		return listaMetaDespesa;
	}

	public void setListaMetaDespesa(List<MetaDespesa> listaMetaDespesa) {
		this.listaMetaDespesa = listaMetaDespesa;
	}

	public List<Categoria> getListaCategoria() {
		return listaCategoria;
	}

	public void setListaCategoria(List<Categoria> listaCategoria) {
		this.listaCategoria = listaCategoria;
	}


}
